Traditional techniques for designing and simulating computer-generated environments, such as virtual worlds in massively multiplayer online (“MMO”) games, do not readily facilitate the efficient development and production of new or modified virtual worlds. Moreover, conventional game platforms for generating virtual worlds further impede the development and production of virtual worlds, especially with respect to massively multiplayer online games. Generally, conventional game platforms use a set of game servers to create a virtual world, with each additional set of games servers being used to create a copy of the virtual world. Such copies are typically referred to as “shards.” Conventional game platforms routinely divide the geography of each virtual world into partitions, and allocate one game server to generate each single partition. A game server that is configured to generate a partition of a virtual world is commonly referred to as an “area server.” Further, some conventional game servers are monolithic, which means that all the game processes for generating a partition for a virtual world are instituted in a single process and/or server. While functional, there are a variety of drawbacks associated with conventional game platforms, as well as the traditional approaches to developing computer-generated worlds.
A drawback for some conventional game platforms is that they allocate one game server for a partition of the virtual world. As such, the game server and its functionality are usually linked directly to the partition and its activities. The performance of a geographically-linked game server, therefore, is a function of the number of players at that partition as well as the kinds of activities being performed there. Further, conventional game platforms that use monolithic game servers are somewhat limited by their inability to adjust their hardware capabilities to meet increases in demand. So, as more players move to a specific partition, the game server that supports that partition becomes increasingly burdened. This, in turn, limits the number of players that can interact with the corresponding virtual world partition. As a remedy, some massively multiplayer online games operate to migrate players off game servers that are heavily populated to game servers that are relatively less populated. This may significantly impact player experience.
Yet another drawback to traditional game platforms is that each game server usually has a separate process space for generating a virtual world partition than the other game servers in the same virtual world. It is not uncommon that players interact across a geographic boundary that demarcates two virtual world portions. As such, difficulties arise due to partition boundaries and conventional game platforms generally require computational resources to try to manage cross-partition interactions. For example, a game server associated with one player in one partition generally requires some sort of tracking functionality to track the interactions of that player with other players in other virtual world partitions. As another example, consider that computational resources are generally required to maintain players as proxies in different process spaces. Traditionally, implementing players as proxies requires converting one representation of player-specific information for one virtual world partition, such as a character identifier, into another representation for use with a separate process space for another virtual world partition. Further, game servers usually communicate among themselves about player interactions using, for example, remote procedure calls, which increase the complexity of communications as well as latency for cross-partition interactions between different memory spaces.
A further drawback to conventional game platforms is that players (or proxies of players) that interact across different virtual world partitions can readily disrupt transactions to unjustly enrich themselves. To illustrate, consider that a first player at one virtual world partition offers to exchange a weapon for gold possessed by a second player at another virtual world partition. Next, consider that the first player receives the gold, but before surrendering the weapon, the first player breaks the connection between the game servers at the different virtual world partitions. As a result, the first player will receive the gold without exchanging the weapon.
One drawback to using monolithic game servers is that if one of the game subprocesses, such as a physics process, of a monolithic game server falters or shuts down, then the entire game server in which the game subprocess resides is also susceptible to faltering or shutting down.
There are other drawbacks to using current client-server architectures to design and simulate computer-generated environments for massively multiplayer online games. Consider that along with the development activities required to create new content for new or modified virtual worlds, game designers and developers also regularly modify executable instructions to accommodate the new content and its data. Modifying executable instructions usually increases the development time, especially during quality assurance and reliability testing to weed out bugs and other problems. Further, massively multiplayer online games commonly require the modified executable code to be downloaded to a client prior to interacting with the new content. For instance, it is not uncommon for massively multiplayer online game platforms to implement large data downloads (e.g., 250 MB), which can include the modified executable code.
In view of the foregoing, it would be desirable to provide a system, a computer-readable medium, a method and an apparatus for generating synthetic environments in a distributed architecture to, among other things, introduce dynamic content into the synthetic environments, and to further provide for efficient development and production of new or modified synthetic environments.